package com.ck.javacode.Chapter7;

/**
 * @author: caoke
 * @date: 2021/11/21 5:35 下午
 * @description:
 */
public class D8_VarScope {
    public static void main(String[] args) {

        /* 属性生命周期较长，伴随着对象的创建而创建，伴随着对象的销毁而销毁。 局部变量，生命周期较短，伴随着它的代码块的执行而创建， 伴随着代码块的结束而销毁。即在一次方法调用过程中
         */
    Dog dog = new Dog();
    dog.say();//当执行 say 方法时，say 方法的局部变量比如 name,会创建，当 say 执行完毕后 //name 局部变量就销毁,但是属性(全局变量)仍然可以使用
    dog.eat();

    T1 t1 = new T1();
    t1.test();//第 1 种跨类访问对象属性的方式
    t1.test2(dog);//第 2 种跨类访问对象属性的方式
    }
}
class T1{
    public void test(){
        Dog dog = new Dog();
        System.out.println(dog.age);
    }
    public void test2(Dog d){
        System.out.println(d.age);
    }
}

class Dog{
    // 属性定义时，可以直接赋值
    int age = 10;
    public String name = "age";

    double weight;

    public void hi(){
        int num;
//        System.out.println(num);
    }

    public void say(){
        // 局部变量 作用域在say方法中
        int n = 10;
        String name = "jack";
        int age =1;
        System.out.println("在say中使用属性 age="+age);
    }

    public void eat(){
        System.out.println("在eat中使用属性 age="+age);
    }
}